<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- FIN NOTE DE LICENCE ---------------------------------------

/**
@ingroup CP_DONNEES
@nosubgrouping
@brief Actions sur un commentaire

Une instance de cpCommentaire représente un commentaire.

Ses variables membres permettent d'accéder à toutes les données du
commentaire issues de la base de données.

Ses méthodes permettent, entre autres, d'effectuer les actions suivantes:
- Modifier le statut du commentaire
- Éditer le commentaire
- Supprimer le commentaire

*/

class cpCommentaire
{

	
	
	
	
	protected $core;				///< <b>cpCore</b>	Instance de cpCore
	
	public $commentaire_id;
	public $page_id;
	public $commentaire_contexte;
	public $commentaire_statut;
	public $utilisateur_id;
	public $commentaire_ip;
	public $commentaire_auteur;
	public $commentaire_email;
	public $commentaire_titre;
	public $commentaire_contenu;
	public $commentaire_date;
	public $commentaire_spam;
	
	public $page;
				
	
	
	
	
	/// @name Initialisation et mise à jour des valeurs
	//@{
	
	
	/**
	Initialise une instance de cpCommentaire.
	
	@param	rs			<b>recordset</b>	Données de la base de données
	@param	core		<b>cpCore</b>		Référence à cpCore
	*/
	public function __construct($rs, $core)
	{
		$this->core =& $core;
		$this->initRs($rs);
	}
	
	
	/** @ignore */
	protected function initRs($rs)
	{
		
		$this->commentaire_id = (integer) $rs->commentaire_id;
		$this->page_id = (integer) $rs->page_id;
		$this->commentaire_contexte = (integer) $rs->commentaire_contexte;
		$this->commentaire_statut = (integer) $rs->commentaire_statut;
		$this->utilisateur_id = (integer) $rs->utilisateur_id;
		$this->commentaire_ip = $rs->commentaire_ip;
		$this->commentaire_auteur = $rs->commentaire_auteur;
		$this->commentaire_email = $rs->commentaire_email;
		$this->commentaire_titre = $rs->commentaire_titre;
		$this->commentaire_contenu = $rs->commentaire_contenu;
		$this->commentaire_date = $rs->commentaire_date;
		$this->commentaire_spam = (integer) $rs->commentaire_spam;
		
		if($rs->exists('page_titre')) {
			$this->page = new cpPage($rs, $this->core, CP_PUBLIEE);
		}
		
		# --COMPORTEMENT-- coreInitRsCommentaire
		$this->core->executerComportement('coreInitRsCommentaire', $rs, $this);
		
	}
	
	
	/**
	Met à jour les valeurs de cpCommentaire pour qu'elles correspondent
	à celles de la base de données.
	
	Doit être appelée chaque fois qu'on modifie les données du
	commentaire dans la base de données.
	*/
	public function rafraichir()
	{
		$rs = $this->core->site->getCommentaires(array(
			'commentaire_id' => $this->commentaire_id
		), CP_GET_RS);
		$this->initRs($rs);
	}
	//@}
	
	
	
	
	
	/// @name Actions
	//@{
	
	
	/**
	Modifie le statut du commentaire (CP_COMMENTAIRE_APPROUVE,
	CP_COMMENTAIRE_ATTENTE, CP_COMMENTAIRE_SPAM).
	
	@param	statut		<b>integer</b>	Statut du commentaire
	*/
	public function modifierStatut($statut)
	{
		$cur = $this->core->con->openCursor($this->core->prefix.'commentaires');
		$cur->commentaire_statut = (integer) $statut;
		$this->enregistrer($cur);
	}
	
	
	/**
	Modifie les propriétés du commentaire.
	
	<var>$cur</var> devrait contenir:
	- commentaire_auteur
	- commentaire_email
	- commentaire_contenu
	- commentaire_statut
	- commentaire_ip
	- commentaire_titre (facultatif)
	
	@param	cur	<b>cursor</b>	Curseur de commentaire
	*/
	public function enregistrer($cur)
	{
		$this->core->site->verifierDonneesCommentaire($cur, false);
		
		# --COMPORTEMENT-- coreAvantEnregistrerCommentaire
		$this->core->executerComportement('coreAvantEnregistrerCommentaire', $cur, $this);
		
		$cur->update('WHERE commentaire_id = '.(integer) $this->commentaire_id);
		
		# --COMPORTEMENT-- coreApresEnregistrerCommentaire
		$this->core->executerComportement('coreApresEnregistrerCommentaire', $cur, $this);
		
		$this->rafraichir();
	}
	
	
	/**
	Supprime le commentaire.
	*/
	public function supprimer()
	{
		
		# --COMPORTEMENT-- coreAvantSupprimerCommentaire
		$this->core->executerComportement('coreAvantSupprimerCommentaire', $this);
		
		$this->core->con->execute(
			'DELETE FROM '.$this->core->prefix.'commentaires '.
			'WHERE commentaire_id = '.(integer) $this->commentaire_id
		);
		
		# --COMPORTEMENT-- coreApresSupprimerCommentaire
		$this->core->executerComportement('coreApresSupprimerCommentaire', $this);
		
	}
	//@}
	
	
}

?>